package com.keqiang.chart.impl.axis.impl.bar

import android.graphics.Color
import android.graphics.Shader
import androidx.annotation.ColorInt
import androidx.annotation.FloatRange
import androidx.annotation.Px
import com.keqiang.chart.impl.axis.AxisEntity
import com.keqiang.chart.utils.px

/**
 * 柱状图数据
 *
 * @param value y轴数据
 *
 * @author Created by wanggaowan on 2022/7/25 16:45
 */
open class BarEntity(value: Float = 0f) : AxisEntity(0f, value) {
    /**
     * 是否绘制标签
     */
    var drawLabel: Boolean = false

    /**
     * 标签值
     */
    var label: String? = null

    /**
     * 标签字体大小
     */
    @setparam:Px
    var labelTextSize: Float = 24f

    /**
     * 标签字体颜色
     */
    @setparam:ColorInt
    var labelColor: Int = Color.BLACK

    /**
     * 标签与柱形图的间距
     */
    @setparam:Px
    var labelOffset: Float = 10f.px

    /**
     * 柱状图标签是否固定在图表顶部，不随柱状图实际高度而变动
     */
    var labelFixTop: Boolean = false

    /**
     * 柱形的颜色
     */
    @setparam:ColorInt
    var color: Int = Color.GRAY

    /**
     * 柱形的着色器工厂，实现渐变色。该方法在绘制过程多次调用，因此不要每次调用都创建新对象
     */
    var shaderFactory: ((left: Float, top: Float, right: Float, bottom: Float) -> Shader)? =
        null

    /**
     * 柱形背景颜色，如果此值不是透明色，则始终绘制完整的背景柱形图
     */
    @setparam:ColorInt
    var bgColor: Int = Color.TRANSPARENT

    /**
     * 柱形宽度占可绘制宽度的百分比,如果[BarGroup]中设置多个[BarEntity],请确保所有[BarEntity.widthPercent]之和不超过1，
     * 否则将出现部分柱形图绘制不全的问题
     */
    @setparam:FloatRange(from = 0.0, to = 1.0)
    var widthPercent = 0.8f
}
